
#ifndef _IPC_FORK_H_
#define _IPC_FORK_H_

#include <stdint.h>

#if defined(WIN32) || defined(WIN64) || defined(WINCE) || defined(_MSC_VER)
/* ---------- Windows begin ---------- */
/* 独立进程模式: 运行进程文件(抛后台运行) */
int32_t ipcfork_system(const char* filePath, char* param, int32_t isHideWindwos = 1);
/* ---------- Windows end ---------- */
#else
/* ---------- Linux begin ---------- */
/* 子进程模式: 创建子进程,返回大于0的子进程pid */
/* 子进程会复制父进程的链接库情况,不能提供干净的运行环境 */
int32_t ipcfork_create(int32_t(*process_main)(const char*), char* param);

/* 独立进程模式: 运行进程文件(抛后台运行) */
int32_t ipcfork_system(const char* filePath, char* param);
/* ---------- Linux end ---------- */
#endif

/* 通过依赖库定位所在目录(带斜杠),appendString用于取得路径后填充到路径后面 */
int32_t ipcfork_pathOfLibrary(char* buff, int32_t buffSize, const char* libraryName, const char* appendString = NULL);

/* 根据pid判断进程存在,返回0存在 */
int32_t ipcfork_checkProcess(int32_t pid);

/* 获取当前进程pid */
int32_t ipcfork_getProcessPid();

/* 根据pid杀死进程 */
void ipcfork_killProcess(int32_t pid);

#endif // _IPC_FORK_H_
